package com.haixiaoke.saas.department.service;

import com.haixiaoke.saas.department.domain.Tenant;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 机构信息Service接口
 *
 * @author xiaolong
 * @date 2023-12-26
 */
public interface ITenantService {
    /**
     * 查询机构信息
     *
     * @return 机构信息
     */
    Tenant selectDepartmentByDepId(String tenantId);

    /**
     * 查询机构信息列表
     *
     * @param department 机构信息
     * @return 机构信息集合
     */
    List<Tenant> selectDepartmentList(Tenant department);

    /**
     * 新增机构信息
     *
     * @param department 机构信息
     * @return 结果
     */
    int  insertDepartment(Tenant department);

    /**
     * 修改机构信息
     *
     * @param department 机构信息
     * @param file
     * @return 结果
     */
    int updateDepartment(Tenant department, MultipartFile file);

    /**
     * 批量删除机构信息
     *
     * @param depIds 需要删除的机构信息主键集合
     * @return 结果
     */
     int deleteDepartmentByDepIds(String[] depIds);

    /**
     * 删除机构信息
     *
     * @param depId 机构信息主键
     * @return 结果
     */
     int deleteDepartmentByDepId(String depId);

    Tenant getElectronicVisaInfo();

    /**
     * 修改机构信息
     * @param department
     * @return
     */
    int manageUpdateDepartment(Tenant department);

    /**
     * 根据机构id查询详细信息
     * @param tenantId
     * @return
     */
    Tenant selectDepByDepId(String tenantId);

    /**
     * 设置机构权限菜单
     */
    int editMenuByDep(Tenant department);

    /**
     * 根据用户id查询机构集合
     * @param userId
     * @return
     */
    List<Tenant> selectDepByUserId(Long userId);

    /**
     * 检测企业限制人数是否已达到最大
     * @param depId
     * @return
     */
    boolean checkPopulation(String depId);

    int updateTenant(Tenant tenant);

    /**
     * 检测企业限制房屋是否已达到最大
     * @param tenantId
     */
    void checkHouseNum(String tenantId);
}
